<?php
declare(strict_types=1);

namespace Zms\Unit;

class Number
{

    /**
     * 字符串转换数字
     * 传入的值如果是有效数字转为数字,并且更具值判断是int还是float
     * @param string|float|int $number
     * @return float|int|null
     */
    public static function format($number)
    {
        if (is_numeric($number)) {
            if (is_string($number)) {
                return preg_match('/\./', $number) ? (floatval($number)) : (intval($number));
            }
            return $number;
        } else {
            return null;
        }
    }


    /**
     * 获取数字精度
     * @param int|float|string $number
     * @return int
     */
    public static function precision($number): int
    {
        $data = self::format($number);
        if (is_int($data)) {
            return 0;
        }
        $info = Str::explode('.', strval($data));
        return isset($info[1]) ? strlen($info[1]) : 0;
    }
}